Data streaming or media streaming is a technique for transferring data so that the data can be processed in a steady and continuous manner. Streaming technologies are becoming increasingly important with the growth of the Internet because sufficient bandwidth is needed to download large multimedia files quickly. Streaming involves transmitting media that would normally be stored in a large file, such as video, in smaller portions such that while a consumer is watching early portions of the video, the later portions are downloaded and queued for viewing.
Adaptive streaming is a process that adjusts the quality of a data stream delivered to an end-user to attempt to provide the best possible experience (e.g., viewing video, listening to audio, and the like). Adaptive streaming provides an improved streaming media experience because the delivery of the data stream changes in response to changing conditions of the user's network.
Adaptive streaming delivers streaming content to users by dynamically switching among different streams of varying quality and size during playback. For example, an adaptive streaming system might have many versions of the same content all processed at different quality levels. Higher quality content, such as full-resolution, high-definition video, might require a large amount of bandwidth to deliver enough video to support streaming. Lower quality content, however, might require less bandwidth to support streaming. An adaptive streaming system can send (and switch between) higher and lower quality content based on, for example, the available bandwidth at any given moment, or the processing power of the device on which the end user is viewing the video. This provides users with the best possible viewing experience at any given time.
To manage and deliver large data files in a streaming environment, an adaptive data stream may be divided into fragments, each a few seconds long. The fragments can be delivered and then coupled together to form the complete content, such as a video. Adaptive streaming can leverage fragments by swapping in and out fragments of varying quality depending on the operating environment.
To keep track of available quality levels and fragments, conventional adaptive streams can include a manifest, such as a text or XML file that contains information about the available quality levels and fragments and the network location of the fragment. Client devices can use the manifest to gather information about the fragments, and can then load the video fragments in the best possible quality that is available at that point in time.
In a conventional fragmented video paradigm, the fragmented video objects or content fragments are stored in Content Delivery Networks (CDNs). From the CDN, the video fragment can be delivered to numerous edge devices. This disclosure identifies and addresses, among other things, an issue where if a CDN solution is to scale to serve potentially millions of devices, the system must support redundancy and site diversity at all levels. In conventional systems, fragmentation functionality is performed at diverse locations across multiple independent devices. The diversity of location and devices can cause errors in content delivery because, for example, content fragments created by different devices are not interchangeable.